import request, { extend } from 'umi-request';
import { message } from 'antd';

const errorHandler = function (error: any) {
  // const codeMap = {
  //   '021': '发生错误啦',
  //   '022': '发生大大大大错误啦',
  //   // ....
  // };
  if (error.response) {
    // 请求已发送但服务端返回状态码非 2xx 的响应
    if (error.response.status > 400) {
      message.error(error.data.message ? error.data.message : error.data);
    }
    // console.log(error.response.headers);
    // console.log(error.data);
    // console.log(error.request);
    // console.log(codeMap[error.data.status]);
  } else {
    // 请求初始化时出错或者没有响应返回的异常
    // console.log(error.message);
    message.error('网络异常！请重试！');
  }

  // throw error; // 如果throw. 错误将继续抛出.
  // 如果return, 则将值作为返回. 'return;' 相当于return undefined, 在处理结果时判断response是否有值即可.
  // return {some: 'data'};
};

const extendRequest = extend({ errorHandler });

export const getUserListService = async ({
  page,
  per_page,
}: {
  page: number;
  per_page: number;
}) => {
  //&page=5&per_page=10
  return extendRequest(
    `http://public-api-v1.aspirantzhang.com/users&page={page|1}&per_page={per_page|10}`,
    {
      method: 'get',
    },
  )
    .then(function (response) {
      return response;
    })
    .catch(function (error) {
      return false;
    });
};

export const saveUserService = async (params: { id: number; value: any }) => {
  return extendRequest(
    `http://public-api-v1.aspirantzhang.com/users/${params.id}`,
    {
      method: 'put',
      data: params.value,
    },
  )
    .then(function (response) {
      if (response == '') {
        return true;
      } else {
        return false;
      }
    })
    .catch(function (error) {
      return false;
    });
};

export const addUserService = async (value: any) => {
  // console.log(value);
  return extendRequest(`http://public-api-v1.aspirantzhang.com/users`, {
    method: 'post',
    data: value,
  })
    .then(function (response) {
      return response.msg != '' ? true : false;
    })
    .catch(function (error) {
      return false;
    });
};

export const deleteUserService = async ({ id }: { id: number }) => {
  return extendRequest(`http://public-api-v1.aspirantzhang.com/users/${id}`, {
    method: 'delete',
  })
    .then(function (response) {
      if (response == '') {
        return true;
      } else {
        return false;
      }
    })
    .catch(function (error) {
      return false;
    });
};
